Non-volatile memory (“NVM”) cells may come in a large variety of structures, including but not limited to Poly-silicon floating gate and Nitride Read Only Memory (“NROM”). NVM cells are generally operated (e.g. programmed, read, and erased) using one or more reference cells. Each of the one or more reference cells may be compared against a memory cell being operated in order to determine a condition or state of the memory cell being operated. As is well known, an NVM cell's state may be defined and determined by its threshold voltage, the gate to source voltage at which the cell begins to significantly conduct current. Different threshold voltage ranges are associated with different states, and a NVM cell's threshold voltage level is correlated to the amount of charge stored in a charge storage region of the cell.
Generally, in order to determine whether an NVM cell is at a specific state, for example erased, programmed, or programmed at one of multiple possible program states within a multi-level cell (“MLC”), the cell's threshold level is compared to that of a reference cell whose threshold level is preset at a voltage level associated with the specific state being tested for. Comparing the threshold voltage of an NVM cell to that of a reference cell is often accomplished using a sense amplifier. Various techniques for comparing an NVM's threshold voltage against those of one or more reference cells, in order to determine the state(s) of the NVM's cells, are well known.
When programming an NVM cell to a desired state, after each programming pulse, the NVM cell's threshold voltage may be compared against a reference cell having a reference threshold voltage set at a voltage level defined as the “program verify” level for the given program state. The reference cell with a threshold voltage set at a voltage level defined as a “program verify” level for the given state may be compared to the threshold voltage of the cell being programmed (also referred to as being charged) in order to determine whether a charge storage area or region of the cell being programmed has been sufficiently charged so as to be considered “programmed” at the desired state.
If after a programming pulse has been applied to a cell, it has been determined that a cell has not been sufficiently charged in order for its threshold voltage to be at or above a “program verify” level (i.e. the threshold voltage of the relevant reference cell) associated with the target program state, the cell is typically hit with another programming pulse to try to inject more charge into its charge storage region. Once a cell's threshold value reaches or exceeds the “program verify” level to which it is being programmed, no further programming pulse should be applied to the cell.
Typically, a group of cells in an MLC array are programmed at the same time. Sometimes all the cells of a set being programmed are being programmed to the same program state, in other cases, a portion of the set being programmed is programmed to one program state while another portion of the set is programmed to a second state.
Since not all cells have the same susceptibility to being programmed, cells may not program at the same rate. Some cells reach a target program state before other cells in the same set of cells that are being programmed together. As a cell reaches a target program state, the cell may be masked and may not receive any more programming pulses. Thus, in subsequent programming cycles, only cells which have not reached their target programming state, may continue to receive programming pulses until each cell has reached its respective target program state. Algorithms for programming MLC cells are known. U.S. patent application Ser. No. 10/354,050, filed on Jan. 30, 2003, assigned to the same assignee as the present invention, teaches several programming algorithms for MLC memory arrays. The specification of U.S. patent application Ser. No. 10/354,050, is hereby incorporated by reference in its entirety into the present application. Any programming algorithm, presently known or to be devised in the future, is applicable to the present invention.
There is a need in the field of semiconductors for improved systems, circuits and methods for the programming of NVM cells and more particularly for programming MLC's.